home *** CD-ROM | disk | FTP | other *** search
-
- Cursor V1.7 - A BASIC-compiler
- (c) Copyright 1990-1994 Jürgen Forster
-
- This program is shareware. You may give it to any other person for a small
- copying fee, but if you use it for a longer time you should send 15$ or
- 20 DM to the author.
-
- "Cursor" translates BASIC-programmes which are written for the AmigaBASIC-
- interpreter in programmes that can be used directly from the CLI or from
- the Workbench and that are faster than the original programmes. Not all
- BASIC-commands are implemented, for a list of supported commands look
- at "SUPPORTED COMMANDS AND FUNCTIONS".
-
- I cannot be made responsible for any damage "Cursor" might cause. Use it at
- your own risk.
-
- Programmes compiled with "Cursor" may only be distributed or sold if you
- have paid the shareware fee.
-
-
-
-
- INSTALLATION
-
- To use "Cursor" copy the file "Cursor" to your C:-directory and the file
- "basic.library" to your "LIBS:"-directory. All programmes that were compiled
- without the "STANDALONE"-option (see "OPTIONS") need this library.
- "Cursor" also needs the math-libraries "mathtrans.library",
- "mathieeedoubbas.library" and "mathieeedoubtrans.library",
- which must be in your "LIBS:"-directory.
- "Cursor" writes some temporary files into the T:-directory, so it is best
- to assign T: to the RAM-disk ("assign T: RAM:").
-
-
-
-
- USAGE
-
- You can only compile BASIC-programmes in the ASCII-format (use
- SAVE "name.bas",A in the AmigaBASIC-interpreter).
- From the CLI call "Cursor" with the name of the BASIC-program as the
- parameter. You can also set some options (see "OPTIONS").
- To use "Cursor" from the workbench you should use the editor "CursorMenu"
- (which can of course be started from the CLI, too). You can specify the
- options from menus if you use the editor.
- If "Cursor" does not find an error during compilation it will create an
- executable file whose name is that of the source text without its extention.
-
-
-
-
- COMPILED PROGRAMMES
-
- - All compiled programmes are "pure", "Cursor" sets the "pure"-bit of
- the programmes automatically.
-
- - Programmes can be started from the CLI or the Workbench.
- Parameters passed from the CLI are treated like the user typed them in
- using the keyboard separating them with the <RETURN>-key.
-
- - If an error occurs while a compiled program is running, an errormessage
- will either be written to standard output (if it exitst) or a requester
- will appear.
-
- - You can abort a compiled program almost always by using a WINDOWCLOSE-
- gadget or <CTRL>-C.
-
-
-
-
- OPTIONS
-
- You can select different options which influence the compiled programmes.
- You can do this from the editor "CursorMenu", with the "OPTION"-command
- in the source text (e.g. "OPTION NOWINDOW) or using CLI-parameters (e.g.
- "Cursor -b2 Test.bas").
-
- The following options are possible:
-
- - NOWINDOW (-w0 from the CLI), OPENWINDOW (-w1)
- NOWINDOW: No window is opened automatically when the compiled program
- is started.
- OPENWINDOW (default): A new window with the number 1 is opened on
- the Workbench-screen or the screen of the editor "CursorMenu".
-
- - ALLPCRELATIVE (-b2), SOMEPCRELATIVE (-b1), NOPCRELATIVE (-b0)
- ALLPCRELATIVE: "Cursor" assumes that all branches in the compiled
- program do not reach further than 32K. The compiled program will get
- shorter because of this.
- SOMEPCRELATIVE (default): "Cursor" only assumes that all branches within
- subprogrammes do not reach further than 32K.
- NOPCRELATIVE: All branches can reach as far as they want.
-
- - STANDALONE (-s)
- If this option is selected the executable will not need the "basic.library"
- at runtime, but it must be present in the current or the "LIBS:"-directory
- during compilation. Though the executable will get about 30K larger, you
- now are sure that your program always runs with the correct version of the
- library. You should use this switch if you want to give your programmes to
- other users.
-
- - LISTING (-l[<listing file>])
- With this switch you can tell the compiler to produce a list of all
- variables of the program. The list will include the subprogram each
- variable belongs to and the number of every line with a reference to that
- variable. The list is written to a file with the extention ".lst"
- or to the file the user selected from the CLI.
-
-
-
-
- SUPPORTED COMMANDS AND FUNCTIONS
-
- "Yes" means that the command or function should work (almost exactly)
- as the same AmigaBASIC-command/function, "No" means that the command/
- function is not yet implemented.
- If a command or a function is not implemented this does not necessarily
- means that "Cursor" tells you about this during the compilation but the
- compiled program will quit with an "advanced feature"-errormessage
- when it reaches the command/function.
-
- ABS() Yes
- AREA Yes
- 20 different points can be used
- AREAFILL Yes
- ASC() Yes
- ATN() Yes
- BEEP
- Works, but no sound.
- BREAK Yes
- CALL Yes
- CDBL() Yes
- CHAIN Not possible
- CHDIR Yes
- CHR$() Yes
- CINT() Yes
- CIRCLE No
- CLEAR Yes
- Used to set the size of memory used for string-variables und for the
- stack (for GOSUB/RETURN and CALL/SUB). These memory-sizes are not
- changed while the compiled program is running, they are always set
- to the largest values found during compilation. This means that the
- parameters of the CLEAR-command must be constant values. The
- default values are 25000 bytes for string-variables and 4000 bytes
- for the stack.
- CLNG() Yes
- CLOSE Yes
- CLS Yes
- COLLISION Yes
- COLLISION() Yes
- COLOR Yes
- COMMON Not possible
- CONT Not possible
- COS() Yes
- CSNG() Yes
- CSRLIN Yes
- CVI() Yes
- CVL() Yes
- CVS() Yes
- CVD() Yes
- DATA Yes
- DATE$ Yes
- DECLARE FUNCTION Yes
- DEF FN Yes
- DEFINT Yes
- DEFLNG Yes
- DEFSNG Yes
- DEFDBL Yes
- DEFSTR Yes
- DELETE Not possible
- DIM Yes
- END Yes
- END SUB Yes (see "SUB")
- EOF() Yes
- ERASE Yes
- ERL Yes
- ERR Yes
- ERROR Yes
- EXIT SUB Yes (see "SUB")
- EXP() Yes
- FIELD Yes
- FILES Yes
- FIX() Yes
- FOR Yes
- FRE() Yes
- FRE(-3) Returns AvailMem(MEMF_LARGEST) like AmigaBASIC does.
- FRE(0) Forces a Garbage-Collection and returns the size of free memory
- for string-variables.
- GET Yes
- GOSUB Yes
- GOTO Yes
- HEX$() Yes
- IF Yes
- INKEY$ Yes
- INPUT Yes
- INPUT$() Yes
- INPUT # Yes
- INSTR Yes
- INT() Yes
- KILL Yes
- LBOUND No
- LEFT$() Yes
- LEN() Yes
- LET Yes
- LIBRARY Yes
- The ".bmap"-files are only needed during compilation
- LINE Yes
- LINE INPUT Yes
- LINE INPUT # Yes
- LIST Not possible
- LLIST Not possible
- LOAD Not possible
- LOC() Yes
- LOCATE Yes
- LOF() Yes
- LOG() Yes
- LPOS() Yes
- LPRINT Yes
- LPRINT USING Yes
- LSET Yes
- MENU Yes
- MENU() Yes
- MERGE Not possible
- MID$() Yes
- MKI$() Yes
- MKL$() Yes
- MKS$() Yes
- MKD$() Yes
- MOUSE() Yes
- MOUSE Yes
- NAME Yes
- NEW Not possible
- NEXT Yes
- OBJECT.AX Yes
- OBJECT.AY Yes
- OBJECT.CLIP Yes
- OBJECT.CLOSE Yes
- OBJECT.HIT Yes
- OBJECT.ON Yes
- OBJECT.OFF Yes
- OBJECT.PLANES Yes
- OBJECT.PRIORITY No
- OBJECT.SHAPE Yes
- OBJECT.START Yes
- OBJECT.STOP Yes
- OBJECT.VX Yes
- OBJEXT.VX() Yes
- OBJECT.VY Yes
- OBJECT.VY() Yes
- OBJECT.X Yes
- OBJECT.X() Yes
- OBJECT.Y Yes
- OBJECT.Y() Yes
- OCT$() Yes
- ON BREAK GOSUB Yes
- ON COLLISION GOSUB Yes
- ON ERROR GOTO Yes
- ON MENU GOSUB Yes
- ON MOUSE GOSUB Yes
- ON TIMER ... GOSUB Yes
- ON ... GOSUB Yes
- ON ... GOTO Yes
- OPEN Only for OUTPUT/APPEND/INPUT.
- OPTION BASE No
- PAINT Yes
- PALETTE Yes
- PATTERN Yes
- PEEK Yes
- PEEKL Yes
- PEEKW Yes
- POINT Yes
- POKE Yes
- POKEL Yes
- POKEW Yes
- POS() Yes
- PRESET Yes
- PRINT (or ?) Yes
- PRINT USING Yes
- PRINT # Yes
- PRINT USING # Yes
- PSET Yes
- PTAB Yes
- PUT Yes
- RANDOMIZE Yes
- READ Yes
- REM Yes
- RESTORE Yes
- RESUME Yes
- RETURN Yes
- RIGHT$() Yes
- RND() Yes
- The randomnumber-generator was taken from Steve Beats (Fish disk 20).
- RSET Yes
- RUN No
- SADD() Yes
- SAVE Not possible
- SAY Yes
- SCREEN Yes
- SCREEN CLOSE Yes
- SCROLL Yes
- SGN() Yes
- SHARED Yes
- SIN() Yes
- SLEEP Yes
- SOUND No
- SPACE$() Yes
- SPC() Yes
- SQR() Yes
- STICK Yes
- read hardware registers directly
- STOP No
- STR$() Yes
- STRIG() Yes
- read hardware registers directly
- STRING$() Yes
- SUB Yes
- Parameters are passed by value and result and not by reference (as I
- think AmigaBASIC does).
- Recursions are allowed, values of local variables are lost after a
- subprogram was left.
- SWAP Yes
- SYSTEM Yes
- TAB() Yes
- TAN() Yes
- TIME$ Yes
- TIMER Yes
- TIMER() Yes
- TRANSLATE$() Yes
- TRON No
- TROFF No
- UBOUND No
- UCASE$ Yes
- VAL Yes
- VARPTR Yes
- WAVE No
- WEND Yes
- WHILE Yes
- WIDTH No
- WINDOW Yes
- WINDOW CLOSE Yes
- WINDOW OUTPUT Yes
- WINDOW() Yes
- WRITE Yes
- WRITE # Yes
-
- also supported:
- =, <, >, <=, >=, <>, MOD, *, /, ^, +, -, \, NOT, AND, OR, XOR, EQV, IMP
-
-
-
-
- ABOUT THE COMPILER
-
- "Cursor" was first written in AmigaBASIC but has been converted to
- SAS/Lattice C now. The Library "basic.library" was written in assembler
- and compiled using "A68k" from Charlie Gibbs.
-
-
-
-
- Please send bug reports, suggestions for improvements, MONEY, etc. to
-
- Jürgen Forster
- Lintheide 9
- 33719 Bielefeld
- Germany
-
-